約 4,455,176 件
https://w.atwiki.jp/abwiki/pages/145.html
コンパイルするもの コンパイルとは高級言語を機械語に翻訳する作業のこと。 ただ翻訳するだけではなく使われていない変数をオミットしたりループを展開したり、 最適化を行うこともよくある。
https://w.atwiki.jp/hirotakaohkubo/pages/36.html
情報システムコース応用実験の第3部。 KITE-1プロセッサを対象としてCを極めて限定したサブセットのコンパイラを作成する。 2013年度 言語処理系論の講義を担当されている粕谷先生に主担当をお願いしました。 2012年度 新バージョンの指導書を書き下ろし。 2011年度 山本先生より引き継ぎしたバージョンをそのまま実施。
https://w.atwiki.jp/tsukuru_os/pages/32.html
人間に分かりやすく複雑な機能や構文を持つ高水準プログラミング言語(高級言語)で書かれたコンピュータプログラムを、コンピュータが解釈・実行できる形式に一括して変換するソフトウェア。 プログラミング言語で書かれたソースコードを読み込んで解析し、コンピュータが直に実行可能な機械語や、それに相当する中間言語などで記述されたオブジェクトコードに変換する。この変換工程のことをコンパイル(comple)という
https://w.atwiki.jp/inclurithm/pages/6.html
戦闘アニメコンパイラ DownLoad http //www16.atwiki.jp/inclurithm?cmd=upload act=open pageid=6 file=BACompiler.zip? 概要 SRC上で起動し、戦闘アニメをプレビューしつつanimation.txtを作成できます。 更新履歴07/01/05 設定ファイルを微妙に更新。最新のものには対応していません。 06/06/12 インターフェースその他諸々を変更。 06/05/10 設定ファイルのデータ形式を変更。ちょっとだけ設定ファイル読込時間が減ったかも 06/05/03 オプション設定のウインドウが消えなくなるのを修正 06/05/01 設定保存時のメニュー周りを修正 詳細 Compile.eveをダブルクリックし、SRCを起動します。 マップコマンドの「戦闘アニメコンパイル」を選択します。 戦闘アニメを設定するシチュエーションを選びます。(「一括」「準備」「攻撃」「命中」など) 右上のウインドウから、戦闘アニメを設定するスロットを選びます。プレビュー時には番号の若い順に実行されます。 右下の「戦闘アニメ:未設定」となっているところをクリックします。 Askウインドウが開くので、「種類→アニメ名」の順番に選び設定をします。 戦闘アニメの編集が終わったら、左下のシステムコマンドウインドウから「設定を保存」を選択し、ユニット名と武器名を入力すると、Compile.eveと同じフォルダにあるanimation.txtに編集内容が出力されます。
https://w.atwiki.jp/akinobu1217/pages/12.html
Windows環境でCコンパイラを用いる際の注意点 標準ライブラリへのパスを明示的に記述する必要がある場合がある。 -I"c \borland\Bcc55\include" -L"c \borland\Bcc55\lib"
https://w.atwiki.jp/j_lecture/pages/54.html
コンパイラ【演習】・・・3年/CS/必修 lecture01 - 08/04/14 lecture02 - 08/04/21 lecture03 - 08/04/13 lecture04 - 08/04/13 lecture01 - 08/04/14 2008/04/14 第一講 講義のつづき 中置記法、後置記法とスタック 問題1~3を授業内に提出。 ◎これからはA4のレポート用紙を持参のこと。 lecture02 - 08/04/21 後置記法と文法。 (オートマトンでやったような問題) プリント配布、ページ29、30の 問題0,1,2,4,5,6と追加問題2題を 来週の授業時に提出。 lecture03 - 08/04/13 lecture04 - 08/04/13 担当:mica@管理人 Last Update 2008年04月21日17時43分56秒 コメントどうぞ♪ 名前 コメント すべてのコメントを見る
https://w.atwiki.jp/usapfrog/pages/37.html
Matlabが遅いよってことで一から勉強するよ Hello Worldまで コンパイラだけなら、linuxは常備(なかったらyumなどで)。 [Windows] OctaveかMingGW環境で手に入る。 Windowsならインストール後"C \Octave\Octave3.6.4_gcc4.6.2\mingw\bin"と"C \Octave\Octave3.6.4_gcc4.6.2\mingw\msys\1.0\bin" または、"C \MinGW\bin"と"C \MinGW\msys\1.0\bin"にパスを通しとくのを忘れないこと。 (LAPACKを使う予定があるならOctaveをいれておくこと) [Mac] macportsやhomebrewなどで、gfortranをインストールする。 $ vi test.f90 program main write(*,*) Hello World end $ gfortran test.f90 $ a.exe 開発環境/IDE まあでも、やっぱIDE欲しいよ。 (WindowsならMinGW導入後) EclipseのPhotranを導入する。 導入法に従って、インストール。 (今までのeclipseに後付しないんなら Eclipse for Parallel Application Developersを落としてきて解凍すればよし) ついでに日本語化をしておく。 http //mergedoc.sourceforge.jp/の真ん中下くらいのPleiades プラグインをダウンロード・解凍 中身をeclipseのフォルダにコピペ・統合する。 eclipse.iniの最終行に以下を追加 -javaagent plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar 初回のみ同梱のeclipse.exe -clean.cmdから起動する 64bit windowsで起動時にJavaがエラーがないとエラーが出るときは、64bit javaを手動でインストールして、http //www.java.com/ja/download/manual.jsp、C \Program Files\Java\jre7\binにパスを通すこと 新規→プロジェクトでFortranぽいのを選ぶ 新規→ソースでFortranソースを選ぶ 上のプログラム書く ビルド・実行 (合間にでるオプションは Local Fortran Application, MinGW gdb) 参考 (pdf)eclipseでFortranプログラムの作り方 コード規約 流儀が本やらサイトによってそれぞれみたいだけど大体以下をベースに。 気象研究所 北海道大学 Fortran90 Tips NAG Fortran入門 FortranTips 変数宣言 変数同士の計算式は大体C同様で計算できる。 複素数標準実装、倍精度のdの使い方が特徴的。 というよか、Fortranでは少し神経質に倍精度指定しなきゃならないらしい。 うっかり1.0とか使うと、単精度になり桁に余計なゴミが入る。 program sampleinteger alogical preal(8) yreal(8), parameter pi = 3.14159 !定数など。(=Cのconst)complex(8) scharacter(len=4) w a = 3p = .true.y = 42.0d0 !dは 3e-3のeみたいに使うs = (6.0d0, 3.0d0) !これで s = 6 + 3iw = "abcd" print *, a, z, u, wend program sample 追記 characterはcharcter w*4でなく上記フォーマットのほうが了解性の点で良いらしい。 掛け算と混同してもいかんしね。 配列 足し算・内積。行数がずいぶん削れるのがありがたい。 printの書式はCとちょっと違う感じ。 program sample implicit none integer, parameter D = 3 real(8) x(D) = (/1d0, 2d0, 3d0/) real(8) y(D) = (/2d0, 1d0, -1d0/) real(8) z(D), v(D) real(8) w real(8) A(D,D) A(1,1 3) = (/ 8.0d0, 1.0d0, 6.0d0 /) A(2,1 3) = (/ 3.0d0, 5.0d0, 7.0d0 /) A(3,1 3) = (/ 4.0d0, 9.0d0, 2.0d0 /) z( ) = x( ) + y( ) v = matmul(A, x) w = dot_product(x, y) print "(a, f8.3, f8.3, f8.3)", "z=", z print "(a, f8.3, f8.3, f8.3)", "v=", v print "(a, f8.3)", "w=", wend program sample 結果 z= 3.000 3.000 2.000 v= 28.000 34.000 28.000 w= 1.000 ループ・分岐 do i=初期,限界,増分 else if (condition) then program sampleinteger i, j, kj=0; k=0do i=1,20 print *, "loop i=", i k= k + 3 if ( k 15) then print *, "exiting loop..." exit ! = break in C end if if ( k 6) cycle ! = continue in C j= j + 2enddoprint *, j, kend program sample 結果 loop i= 1 loop i= 2 loop i= 3 loop i= 4 loop i= 5 loop i= 6 exiting loop... 4 18 関数・モジュール 追記 引数には入出力指定を示すintent(in/out/inout)を付記すること。 sampmodule.f90 module sampmodule implicit none real(8),parameter c = 340d0 real(8),parameter rho = 1.3d0containsinteger function smd_test(a, b, x) integer, intent(in) a, b, x smd_test = a + b * xend function smd_testreal(8) function smd_pres(u) real(8), intent(in) u smd_pres = rho * c * uend function smd_presend module sampmodule sample.f90 program sample use sampmodule implicit none integer d real(8) p print *,c d = smd_test(1, 3, 5) print *,d p = smd_pres(2.0d0) print *,pend program sample ベクトルを返すとき 戻り値がベクトルの時は、resultを指定する。例は外積関数。 function cross(a,b) result(axb) implicit none real(8),dimension(3) axb real(8),dimension(3),intent(in) a real(8),dimension(3),intent(in) b axb(1) = a(2)*b(3) - a(3)*b(2) axb(2) = a(3)*b(1) - a(1)*b(3) axb(3) = a(1)*b(2) - a(2)*b(1)end function cross テキストIO statusのオプションが "r/w"に対応して、"old / (new, replace)" 追記をしたいときはopen文にposition= append オプションを付ける。 エラー処理をしたければiostat=status(整数変数)をつければ、 open時読み込みエラーをstatusに格納してくれて、open時のエラーをスルーできる。 program sample implicit none integer i, j, status integer,parameter fout = 11 integer,parameter fin = 12 real(8) x(20,20) do i=1,20 do j=1,20 x(i, j) = i * 100d0 + j; enddo enddo open(fout, file= mydata.dat , status= replace ) write(fout, *) x close(fout) open(fin, file= mydata.dat , status= old , iostat=status) if ( status .ne. 0 ) stop read(fin, *) x close(fin)end program sample バイナリIO サイズを指定して、オプションが長くなるだけ。 access, form, recl, rec program sample integer siz = 20*20*8 open(fin, file= mydata.bin , access= direct , form= unformatted , status= old , recl=siz) read(fin, rec=1) x close(fin) open(fout, file= mydata.bin , access= direct , form= unformatted , status= replace , recl=siz) write(fout,rec=1) x close(fout)end program sample 共有メモリメモリ並列(SMP) gfortranの共有メモリ並列(-fopenmp)はコンパイラオプションの最適化(-O3)とどこか相性悪いらしく、 扱う配列サイズがやや大きい場合、segmentaion faultを吐くことがあるらしい。 この場合、最適化は(-O1)を指定するとうまくいくことがある。 program sample implicit none integer, parameter n=36 integer i, ene(n), res ene( ) = 0 res = 3 !$omp parallel do private(i) do i=1,n ene(i) = 2*i + res end do !$omp end parallel do print *, ene( )end program sample バグった時はprivate指定をもう一度見なおしておくと良い。 3次逆行列/3次方程式 N 4のときは、素直にLapackとか然るべき数値計算ルーチンを使うべきだけど、 多用する3x3くらいは、(必要なライブラリかき集めるのめんどいし、四角い車輪の再生産にあるけど) 自分で書いていい気がする。 function inv3(A) result(Y) implicit none real(8), intent(in) A(3,3) real(8) Y(3,3) real(8) det integer i,j det = 0 do i=1,3 det = det + A(i,1)*cofact3(A,i,1) end do do i=1,3 do j=1,3 Y(i,j) = cofact3(A,j,i) / det end do end doend function inv3real(8) function cofact3(A,i,j) implicit none real(8), intent(in) A(3,3) integer, intent(in) i, j integer i2, i3, j2, j3 i2 = mod(i, 3)+1; i3 = mod(i+1, 3)+1; j2 = mod(j, 3)+1; j3 = mod(j+1, 3)+1; cofact3 = A(i2,j2)*A(i3,j3)-A(i2,j3)*A(i3,j2)end function cofact3 !wikipediaの三次方程式の解の公式・実部しか取ってこないので注意subroutine solve3(x, a) implicit none real(8), intent(out) x(NDIM) real(8), intent(in) a(NDIM) integer k complex(8) j, w, y(NDIM), p, q, R, S j = (0, 1) w = 0.5d0*(-1d0+j*sqrt(3d0)) p = a(2)-a(1)**2/3d0 q = a(3)-a(2)*a(1)/3d0+2d0/27d0*a(1)**3 R=(-q/2d0 + sqrt((q/2d0)**2 + (p/3d0)**3))**(1d0/3d0) S=(-q/2d0 - sqrt((q/2d0)**2 + (p/3d0)**3))**(1d0/3d0) do k=1,3 y(k) = w**(k-1) * R + w**(4-k) * S x(k) = real(y(k),8) - a(3)/3d0 end doend subroutine solve3
https://w.atwiki.jp/projecthikky/pages/98.html
オンライン実行環境(オンラインコンパイラ) オンライン実行環境(オンラインコンパイラ)とは ブラウザがあれば簡単なプログラミングができるサービスである 概要 対応プログラミング言語一覧対応プログラミング言語1(メジャー言語) 対応プログラミング言語2(メジャー言語) 対応プログラミング言語3(LISP系言語・関数型言語) 対応プログラミング言語4(マイナー言語) 対応プログラミング言語5(マイナー言語) 概要 サイト名 サービス運営者 サイトURL 共有機能 paiza.IO 日本の会社のギノ (paizaの会社) https //paiza.io/ ○ 使い方 Wandbox 日本人プログラマ(@melponさんと@kikairoyaさん) http //melpon.org/wandbox ○ 使い方 Ideone.com(※1) 海外の会社のSphere Research Labs http //ideone.com/ ○ 使い方 codepad(※1) 海外のプログラマSteven Hazelさん http //codepad.org/ ○ 使い方 CodeChef Online IDE 海外の会社のDirecti (CodeChefの会社) https //www.codechef.com/ide × 使い方 GeeksForGeeks IDE 海外の会社のGeeksForGeeks http //code.geeksforgeeks.org/ ○ 使い方 実行くん(Coding Sandbox)(※1) 日本の会社のリクルートキャリア (CodeIQの会社) https //codeiq.jp/tools/sandbox/ × ※1 ... 一部のコンパイラのバージョンがめっちゃ古い 特定のプログラミング言語のみ サイト名 言語 サービス運営者 サイトURL 共有機能 DartPad Dart 海外の会社のGoogle https //dartpad.dartlang.org/ ○ Try F# F# 海外の会社のMicrosoft http //www.tryfsharp.org/Create ? The Go Playground Go 海外の会社のGoogle https //play.golang.org/ ○ Try Haskell Haskell 海外のプログラマChris Doneさん https //tryhaskell.org/ × Try Kotlin Kotolin 海外の会社のJetBrains http //try.kotlinlang.org/ ? Rust Playground Rust 海外の会社のMozilla https //play.rust-lang.org/ ○ TypeScript Playground TypeScript 海外の会社のMicrosoft http //www.typescriptlang.org/play/ ○ 対応プログラミング言語一覧 対応プログラミング言語1(メジャー言語) サイト名 C C++(古) C++11 C++14 C# Java7 Java8 Python2 Python3 PHP PHP7 Perl Perl6 Ruby Ruby2 VB paiza.IO ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ Wandbox ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ Ideone.com ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ codepad ○ ○ ○ ○ ○ ○ CodeChef Online IDE ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ GeeksForGeeks IDE ○ ○ ○ ○ ○ ○ ○ ○ ○ 対応プログラミング言語2(メジャー言語) サイト Objective-C Swift Rust Go D Lua Nim Kotlin JavaScript(Node.js) JavaScript(Other) Fortran Pascal COBOL Bash paiza.IO ○ ○ ○ ○ ○ ○ ○ Wandbox ○ ○ ○ ○ ○ ○ ○ ○ Ideone.com ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ codepad ○ ○ CodeChef Online IDE ○ ○ ○ ○ ○ ○ ○ ○ GeeksForGeeks IDE 対応プログラミング言語3(LISP系言語・関数型言語) サイト名 LISP系言語 関数型言語 CommonLisp CLIPS Clojure Scheme Racket Haskell OCaml F# Erlang Scala StandardML paiza.IO ○ ○ ○ ○ ○ Wandbox ○ ○ ○ ○ Ideone.com ○ ○ ○ ○ ○ ○ ○ ○ ○ codepad ○ ○ ○ CodeChef Online IDE ○ ○ ○ ○ ○ ○ ○ ○ ○ GeeksForGeeks IDE ○ 対応プログラミング言語4(マイナー言語) サイト名 Ada Elixir Factor Groovy Icon Julia Nemerle Nice Octave Paicat Prolog Pike R SmallTalk Tcl paiza.IO ○ Wandbox ○ ○ Ideone.com ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ codepad ○ CodeChef Online IDE ○ ○ ○ ○ ○ ○ ○ ○ GeeksForGeeks IDE 対応プログラミング言語5(マイナー言語) サイト名 Assemble Awk Brainf**k Crystal Intercal PyPy2 PyPy3 Unlambda Whitespace その他 paiza.IO CoffeeScript Wandbox ○ CoffeeScript, LazyK, Rill, VimScript Ideone.com ○ ○ ○ ○ ○ ○ ○ bc, CoffeeScript, Falcon, Fantom, Forth, Oz, PicoLisp codepad CodeChef Online IDE ○ ○ ○ ○ ○ GeeksForGeeks IDE
https://w.atwiki.jp/imops-forth/pages/57.html
かつては、forthはforthで構築されているものが多かった。しかし、現在は、forthといえども、中核部分はC言語などの、様々なプラットフォームで利用できるマシン語コンパイル型の言語環境を用いて構築されている例が多いようである。そんな中でMopsは全体がforthで構築されており、現在では特異な存在となっている。その場合、自分自身を自分自身でコンパイルする、ということになる。 自己コンパイルに際しては、ややこんがらがる事態が発生することがある。その混乱の原因は、今コンパイラとして稼働している環境のワード(=関数)と同名のワードを新たに構築しているコンパイラの中にもコンパイルしなければならないことに由来する。特に、現在稼働中の環境の中にあるワードを、コンパイルされているワードの側から呼び出したりしないように注意しなければならない。これをしてしまうと、コンパイル後の関数が、もはや実行ファイル内に実在しない関数を呼び出してしまうことになり、実行すれば、当然、クラッシュするからである。 この点、C言語などの、ソースコードは文字列でしかなく、それを解析した結果にマシンコードを割り当てて保存すれば良いようなコンパイラ型言語(普通はそういう仕組みである)では発生しにくい問題である。 Forth系言語に関しては、コンパイラ構築の練習のために手を出す人が多いようであるので、その種のテクニカルな問題についても説明しておきたいと思う。あまり考えすぎると何だかわけがわからなくなったりするが、実際にはそれほど難しい話ではない。 以下、forth系環境を用いてforth系言語のコンパイラを構築することを話題の中心とし、一般的なC言語系のコンパイラを用いてforthコンパイラを構築することに関しては、付随的に述べる(その上、実際にC言語系でforthを書いた経験はないので、常識的推測に留まる)。 クロスコンパイルとは? クロスは交差ということで、コンパイルを実行する環境とは別の環境で動くようなコードをコンパイルすること、である。「別の環境」といっても、機械丸ごとマシン語から違うという場合と、OSだけが違うという場合とがある。コンパイラといえども、現在では、何かのOSが動いている状態で動作し、そのサービス関数(ライブラリ関数)を利用するというのは普通なので、CPUのタイプが同じでもOSが違うだけで、かなり違う内容にしなければならない。ポートしようとすると、機械まで違う場合と、OSだけが違う場合とで、かかる時間に大差はないともいわれる。 クロスコンパイルに関して気をつけるべきことは、現在走行中の環境のためのコードを、コンパイルされるコードに混ぜないように注意することである。これに関しては、コンパイルされたマシンコードを保存する場所を考えることで対策を立てるのが一番簡単だが、後で説明する。 機械命令の違いのみならず、保存される数値に関しても、エンディアンの問題がある。iMopsの場合も、初めの環境はビッグエンディアンでRISCマシンであるPowerPC上のコード(PowerMops)を用いて、リトルエンディアンのCISCマシンであるx86-64のコードを出力する形だったので、メモリー上のバイト順を入れ替えるワードを用いた。 なお、自分は全く知識がなかったので初めは混乱したが、機械命令の記録順序は、エンディアンとは関係ないことに留意しておくと良い。機械命令は、通常、最初に演算の種類の指定の記号があり、続いて演算項になるレジスタやメモリー参照の指定の記号があるが、その順番は、数値を表す即値部分(イミディエット)の内部を除けば、エンディアンにかかわらず、メモリーの低いほうが初めという順序である。つまり、機械命令に関しては、全部で4バイトあっても、リトルエンディアンであるからといって小さいほうの桁から格納していく必要はない、というか、そんなことはしてはならない。
https://w.atwiki.jp/wiki2_affiliate/pages/1205.html
名 称 株式会社ワールドコンパイラ (英名 WORLDCOMPILER Co.,Ltd) 所在地 〒141-0031 東京都品川区西五反田8-8-15 カーニープレイス五反田8F TEL:03-6279-8831 FAX:03-3490-9919 設立年 平成15年 代 表 稲垣佑介 資本金 1,000万円 主な業務 携帯やWEBを中心にしたソリューションの提供、 システムの制作運用等。 従業員 10名(平成16年10月現在) 主取引銀行 UFJ銀行 高田馬場支店 主要取引先 アサップネットワーク株式会社 エスマティックエンジニアリングサービス株式会社 クワトロメディア株式会社 ソニーコミュニケーションネットワーク株式会社 富士ソフトABC株式会社 その他多数 マーチャント 【無料着うた】Luna